/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.gob.fonafe.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.RequestAware;
import org.springframework.beans.factory.annotation.Autowired;
import pe.gob.fonafe.domain.EmpresaBean;
import pe.gob.fonafe.domain.PerfilBean;
import pe.gob.fonafe.domain.UsuarioBean;
import pe.gob.fonafe.service.AdministradorService;

/**
 *
 * @author Irving
 */
public class AdministradorAction extends ActionSupport implements Preparable,RequestAware{

    private Map<String,Object> request;
    private static final Logger logger = Logger.getLogger(InmuebleAction.class);
    private String mensajeOk;
    private String mensajeFail;
    private List<UsuarioBean>listUsuarios;
    private UsuarioBean usuarioBean;
    private List<PerfilBean>listPerfil;
    private List<EmpresaBean>listEmpresa;
    private PerfilBean perfilBean;
    
    @Autowired
    private AdministradorService administradorService;
    
    
    /*Parametros*/
    private int tb_Perfil_id_perfil;
    private int tb_Empresa_id_empresa;
    private String nombreCompleto;
    private String email;
    private String idUsuario;
    private int idperfil;
    private String tipoPerfil;
    
    public String buscarUsuarios()
    {
    String resultado="";
        try{
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            setListUsuarios(administradorService.buscarUsuarios(getTb_Perfil_id_perfil(), getTb_Empresa_id_empresa(), getNombreCompleto(), getEmail()));
            mensajeOk = "Se encontraron " + listUsuarios.size() + " registros";
            if(sesion.getAttribute("listUsuarios")!=null)sesion.removeAttribute("listUsuarios");
            sesion.setAttribute("listUsuarios", listUsuarios);
            resultado = SUCCESS;
        }catch (Exception ex){
            ex.printStackTrace();
            resultado = ERROR;
        }
        return resultado;
    }
    
    public String detalleUsuario()
    {
     String resultado="";
     HttpSession sesion = ServletActionContext.getRequest().getSession();
     List<UsuarioBean>listUsu=(List<UsuarioBean>)sesion.getAttribute("listUsuarios");
     
        try{
            if(!(idUsuario).equals("")){
                for(UsuarioBean bean:listUsu){
                    if((bean.getId_usuario()+"").equalsIgnoreCase(getIdUsuario())){
                        usuarioBean = bean;
                        break;
                    }
                }
                setListEmpresa(administradorService.listarEmpresas());
                setListPerfil(administradorService.listarPerfiles());
                resultado = SUCCESS;
            }else{
                resultado ="noValido";
            }
        }catch (Exception ex){
            ex.printStackTrace();
            resultado = ERROR;
        }
        return resultado;
    }
    
    
    public String actualizarUsuario()
    {
    String resultado="";
        try{
            logger.info("Id Inmueble envio Reclano [" + idUsuario +" "+usuarioBean.getDniUsuario()+" "+usuarioBean.getNombre()+ "]");
            usuarioBean.setId_usuario(Integer.parseInt(idUsuario));
            if(!idUsuario.equalsIgnoreCase("")){
                String[] outputs = new String[2];
                outputs = administradorService.actualizarUsuario(usuarioBean);
                logger.info("Id de la ACTUALIZACION [" + outputs[0] + "]");
                logger.info("Mensaje del SP [" + outputs[1] + "]");
                
                resultado = SUCCESS;
            }
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado = ERROR;
        }
        return resultado;
    }
            
            
    public String nuevoUsuario()
    {
     String resultado="";
        try{
            
            setListEmpresa(administradorService.listarEmpresas());
            setListPerfil(administradorService.listarPerfiles());
            resultado = SUCCESS;
            
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado = ERROR;
        }
        return resultado;
    }
            
    public String guardarNuevoUsuario()
    {
    String resultado="";
        try{
           
                String[] outputs = new String[2];
                logger.info("los datos obtenidos son: "+usuarioBean.getNombre()+" "+usuarioBean.getApe_Paterno()+" "+usuarioBean.getApe_Materno());
                outputs = administradorService.guardarNuevoUsuario(usuarioBean);
                logger.info("Id del Registro [" + outputs[0] + "]");
                logger.info("Mensaje del SP [" + outputs[1] + "]");
                
                resultado = SUCCESS;
            
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado = ERROR;
        }
        return resultado;
    }
            
    public String eliminaUsuario()
    {
    String resultado="";
        try{
           
                String[] outputs = new String[2];
                outputs = administradorService.eliminaUsuario(Integer.parseInt(idUsuario));
                logger.info("Id del Registro [" + outputs[0] + "]");
                logger.info("Mensaje del SP [" + outputs[1] + "]");
                
                resultado = SUCCESS;
            
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado = ERROR;
        }
        return resultado;
    }
         
     
    public String detallePerfil()
    {
    String resultado="";
        try{          
                logger.info("El ID perfil es "+getIdperfil());
                perfilBean= administradorService.buscarPerfil(getIdperfil());
                logger.info("El pefil es "+perfilBean.getTipoPerfil());
                resultado = SUCCESS;
            
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado = ERROR;
        }
        return resultado;
    }
    
    
    public String buscarPerfiles()
    {
    String resultado="";
        try{
            HttpSession sesion = ServletActionContext.getRequest().getSession();
            setListPerfil(administradorService.listarPerfiles());
            mensajeOk = "Se encontraron " + listPerfil.size() + " registros";
            if(sesion.getAttribute("listPerfiles")!=null)sesion.removeAttribute("listPerfiles");
            sesion.setAttribute("listPerfiles", listPerfil);
            resultado = SUCCESS;
        }catch (Exception ex){
            ex.printStackTrace();
            resultado = ERROR;
        }
        return resultado;
    }
    
    public String eliminarPerfil()
    {
    String resultado="";
        try{
                String[] outputs = new String[2];
                PerfilBean perfilBean=new PerfilBean();
                perfilBean.setId_perfil(getIdperfil());
                
                outputs = administradorService.eliminarPerfil(getIdperfil());
                logger.info("Id del Registro [" + outputs[0] + "]");
                logger.info("Mensaje del SP [" + outputs[1] + "]");
                
                resultado = SUCCESS;
            
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
            resultado = ERROR;
        }
        return resultado;
    }
    
    
    public void prepare() throws Exception {
        this.listUsuarios=new ArrayList<UsuarioBean>();
        this.listPerfil=new ArrayList<PerfilBean>();
        this.listEmpresa=new ArrayList<EmpresaBean>();
        
        tb_Perfil_id_perfil=0;
        tb_Empresa_id_empresa=0;
        nombreCompleto="";
        email="";
        idUsuario="0";
    }
    
    public void setRequest(Map<String, Object> request) {
        this.request = request;
    }

    /**
     * @return the mensajeOk
     */
    public String getMensajeOk() {
        return mensajeOk;
    }

    /**
     * @param mensajeOk the mensajeOk to set
     */
    public void setMensajeOk(String mensajeOk) {
        this.mensajeOk = mensajeOk;
    }

    /**
     * @return the mensajeFail
     */
    public String getMensajeFail() {
        return mensajeFail;
    }

    /**
     * @param mensajeFail the mensajeFail to set
     */
    public void setMensajeFail(String mensajeFail) {
        this.mensajeFail = mensajeFail;
    }

    /**
     * @return the listUsuarios
     */
    public List<UsuarioBean> getListUsuarios() {
        return listUsuarios;
    }

    /**
     * @param listUsuarios the listUsuarios to set
     */
    public void setListUsuarios(List<UsuarioBean> listUsuarios) {
        this.listUsuarios = listUsuarios;
    }

    /**
     * @return the tb_Perfil_id_perfil
     */
    public int getTb_Perfil_id_perfil() {
        return tb_Perfil_id_perfil;
    }

    /**
     * @param tb_Perfil_id_perfil the tb_Perfil_id_perfil to set
     */
    public void setTb_Perfil_id_perfil(int tb_Perfil_id_perfil) {
        this.tb_Perfil_id_perfil = tb_Perfil_id_perfil;
    }

    /**
     * @return the tb_Empresa_id_empresa
     */
    public int getTb_Empresa_id_empresa() {
        return tb_Empresa_id_empresa;
    }

    /**
     * @param tb_Empresa_id_empresa the tb_Empresa_id_empresa to set
     */
    public void setTb_Empresa_id_empresa(int tb_Empresa_id_empresa) {
        this.tb_Empresa_id_empresa = tb_Empresa_id_empresa;
    }

    /**
     * @return the nombreCompleto
     */
    public String getNombreCompleto() {
        return nombreCompleto;
    }

    /**
     * @param nombreCompleto the nombreCompleto to set
     */
    public void setNombreCompleto(String nombreCompleto) {
        this.nombreCompleto = nombreCompleto;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    

    /**
     * @return the usuarioBean
     */
    public UsuarioBean getUsuarioBean() {
        return usuarioBean;
    }

    /**
     * @param usuarioBean the usuarioBean to set
     */
    public void setUsuarioBean(UsuarioBean usuarioBean) {
        this.usuarioBean = usuarioBean;
    }

    /**
     * @return the idUsuario
     */
    public String getIdUsuario() {
        return idUsuario;
    }

    /**
     * @param idUsuario the idUsuario to set
     */
    public void setIdUsuario(String idUsuario) {
        this.idUsuario = idUsuario;
    }

    /**
     * @return the listPerfil
     */
    public List<PerfilBean> getListPerfil() {
        return listPerfil;
    }

    /**
     * @param listPerfil the listPerfil to set
     */
    public void setListPerfil(List<PerfilBean> listPerfil) {
        this.listPerfil = listPerfil;
    }

    /**
     * @return the listEmpresa
     */
    public List<EmpresaBean> getListEmpresa() {
        return listEmpresa;
    }

    /**
     * @param listEmpresa the listEmpresa to set
     */
    public void setListEmpresa(List<EmpresaBean> listEmpresa) {
        this.listEmpresa = listEmpresa;
    }

    /**
     * @return the id_perfil
     */
    

    /**
     * @return the tipoPerfil
     */
    public String getTipoPerfil() {
        return tipoPerfil;
    }

    /**
     * @param tipoPerfil the tipoPerfil to set
     */
    public void setTipoPerfil(String tipoPerfil) {
        this.tipoPerfil = tipoPerfil;
    }

    /**
     * @return the perfilBean
     */
    public PerfilBean getPerfilBean() {
        return perfilBean;
    }

    /**
     * @param perfilBean the perfilBean to set
     */
    public void setPerfilBean(PerfilBean perfilBean) {
        this.perfilBean = perfilBean;
    }

    /**
     * @return the idperfil
     */
    public int getIdperfil() {
        return idperfil;
    }

    /**
     * @param idperfil the idperfil to set
     */
    public void setIdperfil(int idperfil) {
        this.idperfil = idperfil;
    }
    
    
    
}
